home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3p / usconfig.z / usconfig
Encoding:
Text File  |  1998-10-20  |  32.6 KB  |  463 lines

  1.  
  2.  
  3.  
  4. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      _uuuu_ssss_cccc_oooo_nnnn_ffff_iiii_gggg - semaphore and lock arena configuration operations
  10.  
  11. CCCC SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ####iiiinnnncccclllluuuuddddeeee <<<<uuuulllloooocccckkkkssss....hhhh>>>>
  13.  
  14.      _pppp_tttt_rrrr_dddd_iiii_ffff_ffff______tttt _uuuu_ssss_cccc_oooo_nnnn_ffff_iiii_gggg _((((_iiii_nnnn_tttt _c_m_d_,,,, _...._...._...._))))_;;;;
  15.  
  16. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  17.      _uuuu_ssss_cccc_oooo_nnnn_ffff_iiii_gggg is used to configure the use of semaphores and locks.  Some of
  18.      these options set configurable parameters to be used on the next
  19.      _uuuu_ssss_iiii_nnnn_iiii_tttt(3P), others give back information about a particular arena.  In
  20.      the discussion below, arguments to _uuuu_ssss_cccc_oooo_nnnn_ffff_iiii_gggg are numbered starting from 1,
  21.      thus the first argument refers to _c_m_d.  Many of the options require an
  22.      arena pointer which is the value returned by a successful call to _uuuu_ssss_iiii_nnnn_iiii_tttt
  23.      and is always interpreted as a _uuuu_ssss_pppp_tttt_rrrr______tttt _****.
  24.  
  25.      The following _c_m_ds are available:
  26.  
  27.      CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTSSSSIIIIZZZZEEEE
  28.              Sets the shared segment size (in bytes) for semaphores, locks,
  29.              and the _uuuu_ssss_mmmm_aaaa_llll_llll_oooo_cccc(3P) arena to the value given by the second
  30.              argument interpreted as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt.  The initial value is
  31.              65536 bytes.  This only has effect if called before a _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).
  32.              It returns the previously set value.
  33.  
  34.      CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTUUUUSSSSEEEERRRRSSSS
  35.              Sets the maximum number of users for a given group of semaphores
  36.              and locks to the value given by the second argument interpreted
  37.              as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt.  The maximum allowable is 10000 users, and
  38.              the initial value is 8.  This only has effect if called before
  39.              _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  Each process that calls _uuuu_ssss_iiii_nnnn_iiii_tttt(3P) is considered a
  40.              user, as is each shared address process that uses a spinlock or
  41.              semaphore without calling _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  It returns the previously
  42.              set value.
  43.  
  44.      CCCCOOOONNNNFFFF____GGGGEEEETTTTSSSSIIIIZZZZEEEE
  45.              Returns the arena size (in bytes) for the arena specified by the
  46.              second argument interpreted as an uuuussssppppttttrrrr____tttt ****.  (as returned by
  47.              _u_s_i_n_i_t(3P)).
  48.  
  49.      CCCCOOOONNNNFFFF____GGGGEEEETTTTUUUUSSSSEEEERRRRSSSS
  50.              Returns the maximum number of users for the arena specified by
  51.              the second argument interpreted as an uuuussssppppttttrrrr____tttt ****.  (as returned by
  52.              _u_s_i_n_i_t(3P)).
  53.  
  54.      CCCCOOOONNNNFFFF____LLLLOOOOCCCCKKKKTTTTYYYYPPPPEEEE
  55.              The second argument interpreted as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt.  defines
  56.              which of UUUUSSSS____NNNNOOOODDDDEEEEBBBBUUUUGGGG, UUUUSSSS____DDDDEEEEBBBBUUUUGGGG, or UUUUSSSS____DDDDEEEEBBBBUUUUGGGGPPPPLLLLUUUUSSSS locks are to be
  57.              used in the arena set up by the next call to _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  The
  58.              UUUUSSSS____NNNNOOOODDDDEEEEBBBBUUUUGGGG option is the fastest, and no debugging or metering
  59.              information is available.  UUUUSSSS____DDDDEEEEBBBBUUUUGGGG locks provide metering and
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  71.  
  72.  
  73.  
  74.              debugging information about each lock transaction.  The metering
  75.              information gathered consists of - the number of times the lock
  76.              is requested (_l_m__t_r_i_e_s); the number of times the lock is acquired
  77.              (_l_m__h_i_t_s); and the number of times the lock was found locked
  78.              (_l_m__s_p_i_n_s).  The metering is stored in a _l_o_c_k_m_e_t_e_r__t structure
  79.              and is retrievable via _uuuu_ssss_cccc_tttt_llll_llll_oooo_cccc_kkkk(3P).  The debugging information
  80.              maintained consists of the process id of the owner of the lock
  81.              (_l_d__o_w_n_e_r__p_i_d).  The pid is set to -1 if no one owns the lock.
  82.              The debug info is stored in a _l_o_c_k_d_e_b_u_g__t structure and is
  83.              retrievable via _uuuu_ssss_cccc_tttt_llll_llll_oooo_cccc_kkkk(3P).  The UUUUSSSS____DDDDEEEEBBBBUUUUGGGGPPPPLLLLUUUUSSSS option provides
  84.              the same debugging and metering information and in addition, if
  85.              either an unset lock is unlocked, a set lock is unlocked by other
  86.              than the setter, or a lock is locked twice by the same caller, a
  87.              message is printed to _s_t_d_e_r_r.
  88.  
  89.      CCCCOOOONNNNFFFF____AAAARRRREEEENNNNAAAATTTTYYYYPPPPEEEE
  90.              By default, arenas are configured so that unrelated processes may
  91.              join the arena by specifying the appropriate file name when
  92.              calling _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  This means that the file must continue to
  93.              exist for the duration of the time the arena is in use.  If the
  94.              file is a temporary file, it may be difficult for an application
  95.              program to guarantee the file gets removed at the appropriate
  96.              time.  If the second argument interpreted as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt.  is
  97.              set to UUUUSSSS____SSSSHHHHAAAARRRREEEEDDDDOOOONNNNLLLLYYYY then _uuuu_ssss_iiii_nnnn_iiii_tttt(3P) will unlink the file after
  98.              it has opened it.  This of course means that unrelated processes
  99.              may NEVER join the arena.  This also implies that all users of
  100.              the arena must be sharing file descriptors, either by using the
  101.              PPPPRRRR____SSSSFFFFDDDDSSSS option to _ssss_pppp_rrrr_oooo_cccc(2)), or being related via _ffff_oooo_rrrr_kkkk(2).  Note
  102.              however that processes related via _ffff_oooo_rrrr_kkkk share file descriptors
  103.              only at _ffff_oooo_rrrr_kkkk time, thus the arena must be set up by the parent
  104.              process before any children are spawned.  Note that if a child is
  105.              spawned before an arena is set up, and the arena type is set to
  106.              UUUUSSSS____SSSSHHHHAAAARRRREEEEDDDDOOOONNNNLLLLYYYY and both the parent and child call _uuuu_ssss_iiii_nnnn_iiii_tttt on the
  107.              same filename, they will get separate arenas - probably not the
  108.              desired result.
  109.  
  110.      CCCCOOOONNNNFFFF____CCCCHHHHMMMMOOOODDDD
  111.              Sets the access permissions on the arena and lock files.  When
  112.              _uuuu_ssss_iiii_nnnn_iiii_tttt(3P) creates an arena, the user and group ids are set to
  113.              the callers effective user and group id, and the access
  114.              permissions are set to 0600.  This makes the arena available only
  115.              to processes running with the same effective user id.  To allow
  116.              other user or group ids access to the arena, the mode on the
  117.              various files and locks may be changed by using the CCCCOOOONNNNFFFF____CCCCHHHHMMMMOOOODDDD
  118.              option.  The second argument, interpreted as an uuuussssppppttttrrrr____tttt ****.
  119.              specifies which arena, and the third argument, interpreted as an
  120.              mmmmooooddddeeee____tttt specifies the new mode (see _c_h_m_o_d(2)).  Access to pollable
  121.              semaphores is governed on a per semaphore basis and is set when
  122.              first opening the semaphore via _uuuu_ssss_oooo_pppp_eeee_nnnn_pppp_oooo_llll_llll_ssss_eeee_mmmm_aaaa(3P).
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  137.  
  138.  
  139.  
  140.      CCCCOOOONNNNFFFF____AAAATTTTTTTTAAAACCCCHHHHAAAADDDDDDDDRRRR
  141.              Sets the virtual address where the arena and locks are attached
  142.              in the calling process to the value specified by the second
  143.              argument, taken as a vvvvooooiiiidddd ****.  It must be a multiple of the
  144.              underlying page size (see _gggg_eeee_tttt_pppp_aaaa_gggg_eeee_ssss_iiii_zzzz_eeee(2)).  Normally, when
  145.              _uuuu_ssss_iiii_nnnn_iiii_tttt(3P) is called, the arena and lock area are attached (via
  146.              _mmmm_mmmm_aaaa_pppp(2)) using the option that lets the system pick an
  147.              appropriate attach address.  This may not be appropriate if the
  148.              original creator of the arena is a small process (small code
  149.              space) and a very large code space unrelated process attempts to
  150.              attach to the arena.  This option allows the creator to fix an
  151.              address that is acceptable to all processes wishing to join the
  152.              arena.  Note that it is important after calling _uuuu_ssss_iiii_nnnn_iiii_tttt(3P) to
  153.              reset the attach address to the initial value (_((((_vvvv_oooo_iiii_dddd _****_)))) _~~~~_0000)
  154.              before another _uuuu_ssss_iiii_nnnn_iiii_tttt(3P) is called.  Otherwise the second call
  155.              will fail.  When _ssss_pppp_rrrr_oooo_cccc(2) is called, an arena used to protect
  156.              standard I/O is set up automatically.  By specifying a new attach
  157.              address before first calling _ssss_pppp_rrrr_oooo_cccc(2) the location of the I/O
  158.              arena may be fixed.  This only has effect if called before a
  159.              _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  It returns the previously set value.
  160.  
  161.      CCCCOOOONNNNFFFF____AAAAUUUUTTTTOOOOGGGGRRRROOOOWWWW
  162.              If the second argument, interpreted as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt, is zero
  163.              then the underlying file of a newly created arena will be grown
  164.              to its maximum size (as specified by CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTSSSSIIIIZZZZEEEE) before the
  165.              arena is mapped in.  The arena will be mapped without the
  166.              _MMMM_AAAA_PPPP______AAAA_UUUU_TTTT_OOOO_GGGG_RRRR_OOOO_WWWW option to _mmmm_mmmm_aaaa_pppp(2).  If the second argument is non-
  167.              zero the file will be mapped with the _MMMM_AAAA_PPPP______AAAA_UUUU_TTTT_OOOO_GGGG_RRRR_OOOO_WWWW option.  This
  168.              can cause some unexpected failures if the underlying file system
  169.              fills up.  The default is to map all files with the _MMMM_AAAA_PPPP______AAAA_UUUU_TTTT_OOOO_GGGG_RRRR_OOOO_WWWW
  170.              option.  This only has effect if called before a _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  It
  171.              returns the previously set value.
  172.  
  173.      CCCCOOOONNNNFFFF____AAAAUUUUTTTTOOOORRRREEEESSSSVVVV
  174.              If the second argument, interpreted as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt, is non-
  175.              zero then the arena file will be mapped in with the _MMMM_AAAA_PPPP______AAAA_UUUU_TTTT_OOOO_RRRR_EEEE_SSSS_RRRR_VVVV
  176.              option to _mmmm_mmmm_aaaa_pppp(2).  This option is only effective when auto-
  177.              growing the arena (see _CCCC_OOOO_NNNN_FFFF______AAAA_UUUU_TTTT_OOOO_GGGG_RRRR_OOOO_WWWW above) and the arena file is
  178.              the special device _////_dddd_eeee_vvvv_////_zzzz_eeee_rrrr_oooo.  These two options together permit
  179.              declaring arenas that are very large on systems with limited
  180.              resources, and only encountering errors if in fact the
  181.              application actually uses too much memory.  This only has effect
  182.              if called before a _uuuu_ssss_iiii_nnnn_iiii_tttt(3P).  It returns the previously set
  183.              value.
  184.  
  185.      CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTOOOONNNN
  186.              Enable semaphore history logging for the arena given by the
  187.              second argument interpreted as an uuuussssppppttttrrrr____tttt ****.  The history
  188.              mechanism may then be enabled for previously allocated semaphores
  189.              using _uuuu_ssss_cccc_tttt_llll_ssss_eeee_mmmm_aaaa(3P).  All subsequent semaphores allocated via
  190.              _uuuu_ssss_nnnn_eeee_wwww_ssss_eeee_mmmm_aaaa(3P) are set to log their history.  This _c_m_d serves as a
  191.              global flag on the history mechanism in conjunction with
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  203.  
  204.  
  205.  
  206.              CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTOOOOFFFFFFFF to allow for quick enabling and disabling of
  207.              history.  The history mechanism logs the operation, the semaphore
  208.              for which the operation was done, the pid of the process
  209.              performing the operation, and the address from which the
  210.              operation was called.  No history is maintained for locks, since
  211.              the number of transactions on locks is typically large.
  212.  
  213.      CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTSSSSIIIIZZZZEEEE
  214.              Set the maximum number of history records kept for the arena
  215.              specified by the second argument interpreted as an uuuussssppppttttrrrr____tttt ****.  to
  216.              the value of the third argument, interpreted as an uuuunnnnssssiiiiggggnnnneeeedddd iiiinnnntttt.
  217.              If set to 0 (the initial value) then new history records are
  218.              allocated until there is no more room in the arena.
  219.  
  220.      CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTFFFFEEEETTTTCCCCHHHH
  221.              Fills in a history structure for the arena specified by the
  222.              second argument interpreted as an uuuussssppppttttrrrr____tttt ****.  The third argument,
  223.              interpreted as a hhhhiiiissssttttppppttttrrrr____tttt ****, should point to storage where the
  224.              history data can be copied to.  This structure contains - the
  225.              number of entries in the history list ( _h_p__e_n_t_r_i_e_s); a pointer to
  226.              the most recent history structure ( _h_p__c_u_r_r_e_n_t); and the number
  227.              of non-logged entries due to either lack of space or exceeding
  228.              the maximum number of entries specified by CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTSSSSIIIIZZZZEEEE(
  229.              _h_p__e_r_r_o_r_s).  The history list is a doubly linked and NNNNUUUULLLLLLLL
  230.              terminated list so that the user can then traverse the list as
  231.              they see fit.  Traversing the list from _h_p__c_u_r_r_e_n_t through _h__l_a_s_t
  232.              will access the list from most recent semaphore event to least
  233.              recent.  If no more space is available in the arena, the oldest
  234.              history event is re-used.  The hhhhiiiisssstttt____tttt structure (defined in
  235.              _<<<<_uuuu_llll_oooo_cccc_kkkk_ssss_...._hhhh_>>>>) is described below.
  236.  
  237.      CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTOOOOFFFFFFFF
  238.              Disable the history mechanism for all semaphores in the arena
  239.              specified by the second argument interpreted as an uuuussssppppttttrrrr____tttt ****.
  240.              Note that this simply turns off a global history flag for the
  241.              given arena - the individual semaphores' history state is
  242.              unaffected.
  243.  
  244.      CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTRRRREEEESSSSEEEETTTT
  245.              Reinitializes the history chain for the arena specified by the
  246.              second argument interpreted as an uuuussssppppttttrrrr____tttt ****.  to contain no
  247.              entries. This frees all previously allocated history records.
  248.  
  249.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDIIIIOOOOOOOOFFFFFFFF
  250.              By default, the _s_t_d_i_o(3) routines available with _l_i_b_c._a are
  251.              single threaded.  Multiple shared address space processes may
  252.              attempt to execute them simultaneously and the system guarantees
  253.              that they will work as expected.  This requires that the _s_t_d_i_o(3)
  254.              data structures be locked on each access, thereby adding overhead
  255.              which may be unnecessary in certain applications.  This command
  256.              turns off any single threading of the following routines:  _g_e_t_c,
  257.              _p_u_t_c, _f_g_e_t_c, _f_p_u_t_c, _u_n_g_e_t_c, _g_e_t_w, _p_u_t_w, _g_e_t_s, _f_g_e_t_s, _p_u_t_s, _f_p_u_t_s,
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  269.  
  270.  
  271.  
  272.              _f_o_p_e_n, _f_d_o_p_e_n, _f_r_e_o_p_e_n, _f_t_e_l_l, _r_e_w_i_n_d, _f_e_o_f, _c_l_e_a_r_e_r_r, _f_e_r_r_o_r,
  273.              _s_e_t_b_u_f, _s_e_t_l_i_n_e_b_u_f, _s_e_t_b_u_f_f_e_r, _s_e_t_v_b_u_f, _f_c_l_o_s_e, _f_f_l_u_s_h, _f_r_e_a_d,
  274.              _f_w_r_i_t_e, _f_s_e_e_k, _f_g_e_t_p_o_s, _f_s_e_t_p_o_s, _f_l_o_c_k_f_i_l_e, _f_u_n_l_o_c_k_f_i_l_e, _t_e_m_p_n_a_m,
  275.              _t_m_p_n_a_m, _t_m_p_f_i_l_e, _m_k_t_e_m_p, _m_k_s_t_e_m_p, _p_o_p_e_n, _p_c_l_o_s_e, _a_t_e_x_i_t, _p_r_i_n_t_f,
  276.              _f_p_r_i_n_t_f, _v_p_r_i_n_t_f, _v_f_p_r_i_n_t_f, _s_c_a_n_f, _f_s_c_a_n_f, The previous state of
  277.              _s_t_d_i_o(3) single threading is returned.
  278.  
  279.              Note: for FORTRAN the default is different, see _CCCC_OOOO_NNNN_FFFF______SSSS_TTTT_HHHH_RRRR_EEEE_AAAA_DDDD_IIII_OOOO_OOOO_NNNN
  280.              below.
  281.  
  282.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDIIIIOOOOOOOONNNN
  283.              This option enables single threading of the _s_t_d_i_o(3) routines.
  284.              The previous state of _s_t_d_i_o(3) single threading is returned.
  285.  
  286.              Note: The FORTRAN I/O library is not safe for multi-processing,
  287.              even if the _s_t_d_i_o(3) routines are single threaded.  For this
  288.              reason, FORTRAN programs have _CCCC_OOOO_NNNN_FFFF______SSSS_TTTT_HHHH_RRRR_EEEE_AAAA_DDDD_IIII_OOOO_OOOO_FFFF_FFFF configured by
  289.              default, to avoid the extra overhead.  If a FORTRAN program
  290.              wishes to use the _s_t_d_i_o(3) routines to get parallel I/O, you must
  291.              set _CCCC_OOOO_NNNN_FFFF______SSSS_TTTT_HHHH_RRRR_EEEE_AAAA_DDDD_IIII_OOOO_OOOO_NNNN to re-enable the single threading.
  292.  
  293.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMIIIISSSSCCCCOOOOFFFFFFFF
  294.              Some routines besides _s_t_d_i_o(3) routines are also single threaded
  295.              by default.  This option disables this for the following
  296.              routines:  _o_p_e_n_d_i_r, _r_e_a_d_d_i_r, _s_c_a_n_d_i_r, _s_e_e_k_d_i_r, _c_l_o_s_e_d_i_r, _t_e_l_l_d_i_r,
  297.              _d_u_p_2, _s_r_a_n_d, _r_a_n_d, _a_d_d_s_e_v, _a_d_d_s_e_v_e_r_i_t_y, _f_m_t_m_s_g, _s_e_t_c_a_t, _g_e_t_t_x_t,
  298.              _l_f_m_t, _l_o_c_a_l_e_c_o_n_v, _n_l__l_a_n_g_i_n_f_o, _p_f_m_t, _s_e_t_l_a_b_e_l, _s_e_t_l_o_c_a_l_e,
  299.              _s_t_r_f_t_i_m_e, _s_t_r_x_f_r_m, _s_t_r_c_o_l_l, _v_l_f_m_t, _v_p_f_m_t The previous state of
  300.              single threading is returned.
  301.  
  302.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMIIIISSSSCCCCOOOONNNN
  303.              This option enables single threading of the miscellaneous
  304.              routines mentioned above.  This command is the inverse of
  305.              CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMIIIISSSSCCCCOOOOFFFFFFFF.  The previous state of single threading of
  306.              the miscellaneous routines is returned.
  307.  
  308.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMAAAALLLLLLLLOOOOCCCCOOOOFFFFFFFF
  309.              The _m_a_l_l_o_c(3) routines are single threaded by default.  This
  310.              option disables single threading for the following routines:
  311.              _m_a_l_l_o_c, _f_r_e_e, _r_e_a_l_l_o_c, _c_a_l_l_o_c, _m_a_l_l_o_p_t, _m_a_l_l_i_n_f_o.  The previous
  312.              state of their single threading is returned.
  313.  
  314.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMAAAALLLLLLLLOOOOCCCCOOOONNNN
  315.              This option enables single threading of the _m_a_l_l_o_c(3) routines.
  316.              The previous state of single threading is returned.
  317.  
  318.      The CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTSSSSIIIIZZZZEEEE, CCCCOOOONNNNFFFF____AAAARRRREEEENNNNAAAATTTTYYYYPPPPEEEE, CCCCOOOONNNNFFFF____AAAAUUUUTTTTOOOOGGGGRRRROOOOWWWW, CCCCOOOONNNNFFFF____AAAAUUUUTTTTOOOORRRREEEESSSSVVVV,
  319.      CCCCOOOONNNNFFFF____AAAATTTTTTTTAAAACCCCHHHHAAAADDDDDDDDRRRR, CCCCOOOONNNNFFFF____LLLLOOOOCCCCKKKKTTTTYYYYPPPPEEEE, and CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTUUUUSSSSEEEERRRRSSSS only take effect if
  320.      the caller is the process that first sets up the arena.  If the process
  321.      is just joining an existing arena, the settings of these parameters is
  322.      ignored.
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  335.  
  336.  
  337.  
  338.      The structure declaration of hhhhiiiisssstttt____tttt is:
  339.  
  340.         typedef struct                {
  341.             struct usema_s *h_sem;    /* the semaphore */
  342.             int h_op;                 /* the operation */
  343.             pid_t h_pid;              /* the thread process id */
  344.             int h_scnt;               /* the value of the semaphore */
  345.             pid_t h_wpid;             /* the waking process id */
  346.             char *h_cpc;              /* the calling PC */
  347.             struct hist_s *h_next;    /* the next hist_t in the chain */
  348.             struct hist_s *h_last;    /* the previous hist_t in the chain */
  349.         } hist_t;
  350.  
  351.      _h__s_e_m is the address of the semaphore.  _h__n_e_x_t and _h__l_a_s_t are the
  352.      linkages that chain all the history records together.  _h__o_p defines what
  353.      operation was performed on the semaphore.  Valid operation types are
  354.      defined in <_u_l_o_c_k_s._h>.  _h__p_i_d is the process id of the caller making the
  355.      semaphore call.  _h__s_c_n_t is the semaphore count at the end of the
  356.      operation.  For the HHHHOOOOPPPP____PPPPWWWWOOOOKKKKEEEE operation type, the count is the current
  357.      semaphore count at the time the process ran after being woken.  Pollable
  358.      semaphores will never record a HHHHOOOOPPPP____PPPPWWWWOOOOKKKKEEEE event.  _h__w_p_i_d is the process id
  359.      of the process to next receive the semaphore.  It is only valid for the
  360.      HHHHOOOOPPPP____VVVVWWWWAAAAKKKKEEEE operation.  _h__c_p_c is the address in the callers code that the
  361.      semaphore operation was called from.
  362.  
  363.      The structure declaration of hhhhiiiissssttttppppttttrrrr____tttt is:
  364.  
  365.         typedef struct histptr_s   {
  366.              hist_t *hp_current;   /* pointer to the last hist_t */
  367.              int hp_entries;       /* count of hist_t structs */
  368.              int hp_errors;        /* # of errors due to lack of space */
  369.         } histptr_t;
  370.  
  371.      _uuuu_ssss_cccc_oooo_nnnn_ffff_iiii_gggg will fail if one or more of the following are true:
  372.  
  373.      _EEEE_IIII_NNNN_VVVV_AAAA_LLLL    _c_m_d is not a valid command.
  374.  
  375.      _EEEE_IIII_NNNN_VVVV_AAAA_LLLL    _c_m_d is equal to CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTSSSSIIIIZZZZEEEE and the second argument is less
  376.                than the system-imposed minimum (4096 bytes) or greater than
  377.                the system-imposed maximum size for a mapped memory segment.
  378.  
  379.      _EEEE_IIII_NNNN_VVVV_AAAA_LLLL    _c_m_d is equal to CCCCOOOONNNNFFFF____IIIINNNNIIIITTTTUUUUSSSSEEEERRRRSSSS and the second argument is
  380.                greater than the system-imposed maximum (10000).
  381.  
  382.      _EEEE_IIII_NNNN_VVVV_AAAA_LLLL    _c_m_d is equal to CCCCOOOONNNNFFFF____AAAARRRREEEENNNNAAAATTTTYYYYPPPPEEEE and the second argument is not
  383.                equal to either UUUUSSSS____SSSSHHHHAAAARRRREEEEDDDDOOOONNNNLLLLYYYY or UUUUSSSS____GGGGEEEENNNNEEEERRRRAAAALLLL.
  384.  
  385.      _EEEE_IIII_NNNN_VVVV_AAAA_LLLL    _c_m_d is equal to CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTFFFFEEEETTTTCCCCHHHH and history is not currently
  386.                enabled.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))                                                      UUUUSSSSCCCCOOOONNNNFFFFIIIIGGGG((((3333PPPP))))
  401.  
  402.  
  403.  
  404. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  405.      _cccc_hhhh_mmmm_oooo_dddd(2), _uuuu_ssss_cccc_tttt_llll_llll_oooo_cccc_kkkk(3P), _uuuu_ssss_cccc_tttt_llll_ssss_eeee_mmmm_aaaa(3P), _uuuu_ssss_iiii_nnnn_iiii_tttt(3P), _uuuu_ssss_iiii_nnnn_iiii_tttt_llll_oooo_cccc_kkkk(3P),
  406.      _uuuu_ssss_iiii_nnnn_iiii_tttt_ssss_eeee_mmmm_aaaa(3P), _uuuu_ssss_mmmm_aaaa_llll_llll_oooo_cccc(3P), _uuuu_ssss_nnnn_eeee_wwww_llll_oooo_cccc_kkkk(3P), _uuuu_ssss_nnnn_eeee_wwww_ssss_eeee_mmmm_aaaa(3P),
  407.      _uuuu_ssss_nnnn_eeee_wwww_pppp_oooo_llll_llll_ssss_eeee_mmmm_aaaa(3P).
  408.  
  409. DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
  410.      Upon successful completion, the return value is dependent on the
  411.      particular command.  CCCCOOOONNNNFFFF____AAAAUUUUTTTTOOOORRRREEEESSSSVVVV, CCCCOOOONNNNFFFF____AAAAUUUUTTTTOOOOGGGGRRRROOOOWWWW, CCCCOOOONNNNFFFF____AAAATTTTTTTTAAAACCCCHHHHAAAADDDDDDDDRRRR,
  412.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMAAAALLLLLLLLOOOOCCCCOOOOFFFFFFFF, CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMAAAALLLLLLLLOOOOCCCCOOOONNNN, CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMIIIISSSSCCCCOOOOFFFFFFFF,
  413.      CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDMMMMIIIISSSSCCCCOOOONNNN, CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDSSSSTTTTDDDDIIIIOOOOOOOOFFFFFFFF, CCCCOOOONNNNFFFF____SSSSTTTTHHHHRRRREEEEAAAADDDDSSSSTTTTDDDDIIIIOOOOOOOONNNN,
  414.      CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTRRRREEEESSSSEEEETTTT, CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTSSSSIIIIZZZZEEEE, CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTOOOONNNN, CCCCOOOONNNNFFFF____HHHHIIIISSSSTTTTOOOOFFFFFFFF, CCCCOOOONNNNFFFF____GGGGEEEETTTTSSSSIIIIZZZZEEEE,
  415.      and CCCCOOOONNNNFFFF____GGGGEEEETTTTUUUUSSSSEEEERRRRSSSS never return an error.  Otherwise, a value of -1 is
  416.      returned and _eeee_rrrr_rrrr_nnnn_oooo is set to indicate the error.
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.